package com.ruoyi.task.service;


import com.ruoyi.common.core.domain.dto.TaskReviewDto;
import com.ruoyi.system.service.FilterParams;
import com.ruoyi.task.domain.Task;

import java.util.List;

/**
 * 任务Service接口
 *
 * @author KevenPotter
 * @date 2024-04-28 16:51:13
 */
public interface ITaskService extends FilterParams<Task> {

    /**
     * 查询任务
     *
     * @param id 任务主键
     * @return 任务
     */
    Task getById(Long id);

    /**
     * 查询任务列表
     *
     * @param task 任务
     * @return 任务集合
     */
    List<Task> getList(Task task);

    /**
     * 查询所有任务
     *
     * @return 返回所有任务
     * @author KevenPotter
     * @date 2024-04-29 15:41:17
     */
    List<Task> getAllList();

    /**
     * 新增任务
     *
     * @param task 任务
     * @return 结果
     */
    int insertTask(Task task);

    /**
     * 修改任务
     *
     * @param task 任务
     * @return 结果
     */
    int updateTask(Task task);

    /**
     * 批量删除任务
     *
     * @param ids 需要删除的任务主键集合
     * @return 结果
     */
    int deleteTaskByIds(Long[] ids);

    /**
     * 删除任务信息
     *
     * @param id 任务主键
     * @return 结果
     */
    int deleteTaskById(Long id);

    /**
     * 审核任务
     *
     * @param taskReviewDto 任务审核数据传输
     * @return 返回是否审核成功
     * @author KevenPotter
     * @date 2024-04-29 10:00:25
     */
    int review(TaskReviewDto taskReviewDto);

    /**
     * 标记精选操作
     *
     * @param taskId 任务编号
     * @return 返回标记精选是否成功
     * @author KevenPotter
     * @date 2024-05-01 10:05:28
     */
    int markFeatured(Long taskId);

    /**
     * 取消精选操作
     *
     * @param taskId 任务编号
     * @return 返回取消精选是否成功
     * @author KevenPotter
     * @date 2024-05-01 10:05:38
     */
    int cancelFeatured(Long taskId);

    /**
     * 标记置顶操作
     *
     * @param taskId 任务编号
     * @return 返回标记置顶是否成功
     * @author KevenPotter
     * @date 2024-05-01 10:45:18
     */
    int markTop(Long taskId);

    /**
     * 取消置顶操作
     *
     * @param taskId 任务编号
     * @return 返回取消置顶是否成功
     * @author KevenPotter
     * @date 2024-05-01 10:45:25
     */
    int cancelTop(Long taskId);

    /**
     * 查询任务总数
     *
     * @return 返回任务总数
     * @author KevenPotter
     * @date 2024-05-01 20:06:11
     */
    int getTaskCounts();

    /**
     * 查询精选任务总数
     *
     * @return 返回精选任务总数
     * @author KevenPotter
     * @date 2024-05-01 20:06:18
     */
    int getTaskFeaturedCounts();
}
